<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // console.log('1');

        // setTimeout(function () {
        //     console.log('2');
        //     process.nextTick(function () {
        //         console.log('3');
        //     })
        //     new Promise(function (resolve) {
        //         console.log('4');
        //         resolve();
        //     }).then(function () {
        //         console.log('5')
        //     })
        // })
        // process.nextTick(function () {
        //     console.log('6');
        // })
        // new Promise(function (resolve) {
        //     console.log('7');
        //     resolve();
        // }).then(function () {
        //     console.log('8')
        // })

        // setTimeout(function () {
        //     console.log('9');
        //     process.nextTick(function () {
        //         console.log('10');
        //     })
        //     new Promise(function (resolve) {
        //         console.log('11');
        //         resolve();
        //     }).then(function () {
        //         console.log('12')
        //     })
        // })




        console.log('script start') //1

        async function async1() {
            await async2()
            console.log('async1 end') //5

            // 等价于以下代码
            // new Promise((resolve, reject) => {
            //         console.log('async2 end')//2
            //     })
            //     .then(res => {
            //         console.log('async1 end')
            //     })
        }
        async function async2() {
            console.log('async2 end') //2 
        }
        async1()

        setTimeout(function () {
            console.log('setTimeout') // 8
        }, 0)

        new Promise(resolve => {
                console.log('Promise') // 3
                resolve()
            })
            .then(function () {
                console.log('promise1') // 6
            })
            .then(function () {
                console.log('promise2') //7
            })

        console.log('script end') //4

        // 
    </script>
</body>

</html>